package com.atguigu.lease.web.admin.custom.converter;

import com.atguigu.lease.model.enums.ItemType;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

/**
 * Description:
 * TODO 该类的作用是编写一个类型转换器
 * TODO 用于将前端发送来的字符串信息转换成对于的ItemType的枚举类型
 * TODO 写完这个类后，需要去配置文件中注册一下 ---> WebMvcConfiguration 其实现了WebMvcConfigurer接口
 * @author Yanxinhao on 2024/11/16
 */
@Component
public class StringToItemTypeConverter implements Converter<String, ItemType> {
    @Override
    public ItemType convert(String source) {
        //获取该枚举类下的所有枚举项，返回值是个数组
        ItemType[] values = ItemType.values();
        //遍历枚举项数组，判断是否有某个枚举项的getCode()方法返回的Code与之相匹配
        for (ItemType value : values) {
            //TODO 因为前端发送来的数据一定是字符串
            // 所以这里需要将前端发送来的字符串转换为Integer类型，
            // 再与枚举项的getCode()方法返回的Code进行比较
            if (value.getCode().equals(Integer.valueOf(source))){
                return value;
            }
        }
        // 如果没有匹配上的，就抛出非法参数异常
        throw new IllegalArgumentException("code非法");
    }
}